# -*- coding: utf-8 -*-

# Autor: Pedro Godinho, n.º 6355
# Data: 27/11/2011

#i mports necessários para conseguir criar a base de dados e fazer
# a leitura dos ficheiros csv's
import sqlite3
import csv

class BaseDados:
    '''
    Classe que cria a Base de Dados com o conteudo dos ficheiros CSV's
    fornecidos pelo docente
    '''
    CODIGO_DOCENTE = 0
    NOME = 1
    ULTIMO_GRAU = 2
    CURSO = 3
    CATEGORIA = 4
    REGIME = 5
    ANO_LECTIVO = 6
    TIPO_ESTABELECIMENTO = 7
    NOME_ESTABELECIMENTO = 8
    
    # método para preencher a base de dados, com os dados contidos nos ficheiros csv's
    @staticmethod
    def preencher_basedados():
        print "A criar a Base de Dados..."
        bd = BaseDados()
        conn = sqlite3.connect('BaseDados.db')
        cursor = conn.cursor()
        cursor.execute(''' drop table if exists dados ''')
        conn.commit()
        cursor.execute('''create table if not exists dados (CodigoDocente text,
                                                           Nome text,
                                                           UltimoGrau text,
                                                           Curso text,
                                                           Categoria text,
                                                           Regime text,
                                                           AnoLectivo integer,
                                                           TipoEstabelecimento text,
                                                           NomeEstabelecimento text)''')

        headers = [] # lista que guarda a primeira linha de cada csv,
                     # com os cabeçalhos 

        for i in xrange(0,11): # percorre os ficheiros csv's e adiciona-os à base de dados
            rebDados = csv.reader(open('rebcsv/reb'+str(i)+'.csv', 'rb'), delimiter=',')
            line = 0 
            for row in rebDados:
                list2 = []
                for colunm in row:
                    list2.append(colunm)
                if line != 0: # critério de paragem para guardar a 1ª linha dos csv's
                    for row in rebDados:
                        stmt = '''insert or replace into dados (CodigoDocente,
                                                Nome,
                                                UltimoGrau,
                                                Curso,
                                                Categoria,
                                                Regime,
                                                AnoLectivo,
                                                TipoEstabelecimento,
                                                NomeEstabelecimento)
                                    values("{0}", "{1}", "{2}", "{3}", "{4}",
                                           "{5}", "{6}", "{7}", "{8}")'''.\
                            format(str(row[bd.CODIGO_DOCENTE]),
                                   str(row[bd.NOME]).replace( '"', '¨' ), # susbitui as " por ¨ para conseguir inserir os dados na Base de Dados
                                   str(row[bd.ULTIMO_GRAU]).replace( '"', '¨' ),
                                   str(row[bd.CURSO]).replace( '"', '¨' ),
                                   str(row[bd.CATEGORIA]).replace( '"', '¨' ),
                                   str(row[bd.REGIME]).replace( '"', '¨' ),
                                   str(row[bd.ANO_LECTIVO]).replace( '"', '¨' ),
                                   str(row[bd.TIPO_ESTABELECIMENTO]).replace( '"', '¨' ),
                                   str(row[bd.NOME_ESTABELECIMENTO]).replace( '"', '¨' ))
                        cursor.execute(stmt)
                        pass
                else:
                    headers = list2
                line = 1
                pass
            pass
        conn.commit()
        conn.close()
        print "Base de Dados Completa!"
        pass
